home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / DrawSprocket.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  12.3 KB  |  478 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Games Sprockets: DrawSprocket interfaces
  5.  
  6.      Version:    Technology:    Draw Sprocket 1.7
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1996-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __DRAWSPROCKET__
  18. #define __DRAWSPROCKET__
  19.  
  20. #ifndef __MACTYPES__
  21.     #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __EVENTS__
  25.     #include <Events.h>
  26. #endif
  27.  
  28. #ifndef __QUICKDRAW__
  29.     #include <Quickdraw.h>
  30. #endif
  31.  
  32. #ifndef __QDOFFSCREEN__
  33.     #include <QDOffscreen.h>
  34. #endif
  35.  
  36. #ifndef __DISPLAYS__
  37.     #include <Displays.h>
  38. #endif
  39.  
  40. #ifndef __MACERRORS__
  41.     #include <MacErrors.h>
  42. #endif
  43.  
  44.  
  45.  
  46.  
  47. #if PRAGMA_ONCE
  48. #pragma once
  49. #endif
  50.  
  51. #ifdef __cplusplus
  52. extern "C" {
  53. #endif
  54.  
  55. #if PRAGMA_IMPORT
  56. #pragma import on
  57. #endif
  58.  
  59. #if PRAGMA_STRUCT_ALIGN
  60.     #pragma options align=power
  61. #elif PRAGMA_STRUCT_PACKPUSH
  62.     #pragma pack(push, 2)
  63. #elif PRAGMA_STRUCT_PACK
  64.     #pragma pack(2)
  65. #endif
  66.  
  67. #if PRAGMA_ENUM_ALWAYSINT
  68.     #pragma enumsalwaysint on
  69. #elif PRAGMA_ENUM_OPTIONS
  70.     #pragma option enum=int
  71. #elif PRAGMA_ENUM_PACK
  72.     #if __option(pack_enums)
  73.         #define PRAGMA_ENUM_PACK__DRAWSPROCKET__
  74.     #endif
  75.     #pragma options(!pack_enums)
  76. #endif
  77.  
  78. /*
  79. ********************************************************************************
  80. ** constants
  81. ********************************************************************************
  82. */
  83.  
  84. enum DSpDepthMask {
  85.     kDSpDepthMask_1                = 1 << 0,
  86.     kDSpDepthMask_2                = 1 << 1,
  87.     kDSpDepthMask_4                = 1 << 2,
  88.     kDSpDepthMask_8                = 1 << 3,
  89.     kDSpDepthMask_16            = 1 << 4,
  90.     kDSpDepthMask_32            = 1 << 5,
  91.     kDSpDepthMask_All            = -1L
  92. };
  93. typedef enum DSpDepthMask DSpDepthMask;
  94.  
  95.  
  96. enum DSpColorNeeds {
  97.     kDSpColorNeeds_DontCare        = 0L,
  98.     kDSpColorNeeds_Request        = 1L,
  99.     kDSpColorNeeds_Require        = 2L
  100. };
  101. typedef enum DSpColorNeeds DSpColorNeeds;
  102.  
  103.  
  104. enum DSpContextState {
  105.     kDSpContextState_Active        = 0L,
  106.     kDSpContextState_Paused        = 1L,
  107.     kDSpContextState_Inactive    = 2L
  108. };
  109. typedef enum DSpContextState DSpContextState;
  110.  
  111. /* kDSpContextOption_QD3DAccel not yet implemented */
  112.  
  113. enum DSpContextOption {
  114.                                                                 /*    kDSpContextOption_QD3DAccel        = 1<<0,*/
  115.     kDSpContextOption_PageFlip    = 1 << 1,
  116.     kDSpContextOption_DontSyncVBL = 1 << 2,
  117.     kDSpContextOption_Stereoscopic = 1 << 3
  118. };
  119. typedef enum DSpContextOption DSpContextOption;
  120.  
  121.  
  122. enum DSpAltBufferOption {
  123.     kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  124. };
  125. typedef enum DSpAltBufferOption DSpAltBufferOption;
  126.  
  127.  
  128. enum DSpBufferKind {
  129.     kDSpBufferKind_Normal        = 0
  130. };
  131. typedef enum DSpBufferKind DSpBufferKind;
  132.  
  133.  
  134. enum DSpBlitMode {
  135.     kDSpBlitMode_Plain            = 0,
  136.     kDSpBlitMode_SrcKey            = 1 << 0,
  137.     kDSpBlitMode_DstKey            = 1 << 1,
  138.     kDSpBlitMode_Interpolation    = 1 << 2
  139. };
  140. typedef enum DSpBlitMode DSpBlitMode;
  141.  
  142. /*
  143. ********************************************************************************
  144. ** data types
  145. ********************************************************************************
  146. */
  147. typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  148. typedef struct OpaqueDSpContextReference*  DSpContextReference;
  149. #define kDSpEveryContext ((DSpContextReference)NULL)
  150. typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  151. typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  152.  
  153. struct DSpContextAttributes {
  154.     Fixed                             frequency;
  155.     UInt32                             displayWidth;
  156.     UInt32                             displayHeight;
  157.     UInt32                             reserved1;
  158.     UInt32                             reserved2;
  159.     UInt32                             colorNeeds;
  160.     CTabHandle                         colorTable;
  161.     OptionBits                         contextOptions;
  162.     OptionBits                         backBufferDepthMask;
  163.     OptionBits                         displayDepthMask;
  164.     UInt32                             backBufferBestDepth;
  165.     UInt32                             displayBestDepth;
  166.     UInt32                             pageCount;
  167.     char                             filler[3];
  168.     Boolean                         gameMustConfirmSwitch;
  169.     UInt32                             reserved3[4];
  170. };
  171. typedef struct DSpContextAttributes        DSpContextAttributes;
  172. typedef DSpContextAttributes *            DSpContextAttributesPtr;
  173.  
  174. struct DSpAltBufferAttributes {
  175.     UInt32                             width;
  176.     UInt32                             height;
  177.     DSpAltBufferOption                 options;
  178.     UInt32                             reserved[4];
  179. };
  180. typedef struct DSpAltBufferAttributes    DSpAltBufferAttributes;
  181. typedef struct DSpBlitInfo                 DSpBlitInfo;
  182. typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  183.  
  184. struct DSpBlitInfo {
  185.     Boolean                         completionFlag;
  186.     char                             filler[3];
  187.     DSpBlitDoneProc                 completionProc;
  188.     DSpContextReference             srcContext;
  189.     CGrafPtr                         srcBuffer;
  190.     Rect                             srcRect;
  191.     UInt32                             srcKey;
  192.  
  193.     DSpContextReference             dstContext;
  194.     CGrafPtr                         dstBuffer;
  195.     Rect                             dstRect;
  196.     UInt32                             dstKey;
  197.  
  198.     DSpBlitMode                     mode;
  199.     UInt32                             reserved[4];
  200. };
  201.  
  202.  
  203. typedef DSpBlitInfo *                    DSpBlitInfoPtr;
  204. /*
  205. ********************************************************************************
  206. ** function prototypes
  207. ********************************************************************************
  208. */
  209. /*
  210. ** global operations
  211. */
  212. EXTERN_API_C( OSStatus )
  213. DSpStartup                        (void);
  214.  
  215. EXTERN_API_C( OSStatus )
  216. DSpShutdown                        (void);
  217.  
  218. EXTERN_API_C( NumVersion )
  219. DSpGetVersion                    (void);
  220.  
  221. EXTERN_API_C( OSStatus )
  222. DSpGetFirstContext                (DisplayIDType             inDisplayID,
  223.                                  DSpContextReference *    outContext);
  224.  
  225. EXTERN_API_C( OSStatus )
  226. DSpGetNextContext                (DSpContextReference     inCurrentContext,
  227.                                  DSpContextReference *    outContext);
  228.  
  229. EXTERN_API_C( OSStatus )
  230. DSpGetCurrentContext            (DisplayIDType             inDisplayID,
  231.                                  DSpContextReference *    outContext);
  232.  
  233. EXTERN_API_C( OSStatus )
  234. DSpFindBestContext                (DSpContextAttributesPtr  inDesiredAttributes,
  235.                                  DSpContextReference *    outContext);
  236.  
  237. EXTERN_API_C( OSStatus )
  238. DSpFindBestContextOnDisplayID    (DSpContextAttributesPtr  inDesiredAttributes,
  239.                                  DSpContextReference *    outContext,
  240.                                  DisplayIDType             inDisplayID);
  241.  
  242. EXTERN_API_C( OSStatus )
  243. DSpCanUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  244.                                  Boolean *                outUserCanSelectContext);
  245.  
  246. EXTERN_API_C( OSStatus )
  247. DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  248.                                  DisplayIDType             inDialogDisplayLocation,
  249.                                  DSpEventProcPtr         inEventProc,
  250.                                  DSpContextReference *    outContext);
  251.  
  252. EXTERN_API_C( OSStatus )
  253. DSpProcessEvent                    (EventRecord *            inEvent,
  254.                                  Boolean *                outEventWasProcessed);
  255.  
  256. EXTERN_API_C( OSStatus )
  257. DSpSetBlankingColor                (const RGBColor *        inRGBColor);
  258.  
  259. EXTERN_API_C( OSStatus )
  260. DSpSetDebugMode                    (Boolean                 inDebugMode);
  261.  
  262. EXTERN_API_C( OSStatus )
  263. DSpFindContextFromPoint            (Point                     inGlobalPoint,
  264.                                  DSpContextReference *    outContext);
  265.  
  266. EXTERN_API_C( OSStatus )
  267. DSpGetMouse                        (Point *                outGlobalPoint);
  268.  
  269. /*
  270. ** alternate buffer operations
  271. */
  272. EXTERN_API_C( OSStatus )
  273. DSpAltBuffer_New                (DSpContextReference     inContext,
  274.                                  Boolean                 inVRAMBuffer,
  275.                                  DSpAltBufferAttributes * inAttributes,
  276.                                  DSpAltBufferReference * outAltBuffer);
  277.  
  278. EXTERN_API_C( OSStatus )
  279. DSpAltBuffer_Dispose            (DSpAltBufferReference     inAltBuffer);
  280.  
  281. EXTERN_API_C( OSStatus )
  282. DSpAltBuffer_InvalRect            (DSpAltBufferReference     inAltBuffer,
  283.                                  const Rect *            inInvalidRect);
  284.  
  285. EXTERN_API_C( OSStatus )
  286. DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference     inAltBuffer,
  287.                                  DSpBufferKind             inBufferKind,
  288.                                  CGrafPtr *                outCGrafPtr,
  289.                                  GDHandle *                outGDevice);
  290.  
  291. /*
  292. ** context operations
  293. */
  294. /* general */
  295. EXTERN_API_C( OSStatus )
  296. DSpContext_GetAttributes        (DSpContextReference     inContext,
  297.                                  DSpContextAttributesPtr  outAttributes);
  298.  
  299. EXTERN_API_C( OSStatus )
  300. DSpContext_Reserve                (DSpContextReference     inContext,
  301.                                  DSpContextAttributesPtr  inDesiredAttributes);
  302.  
  303. EXTERN_API_C( OSStatus )
  304. DSpContext_Queue                (DSpContextReference     inParentContext,
  305.                                  DSpContextReference     inChildContext,
  306.                                  DSpContextAttributesPtr  inDesiredAttributes);
  307.  
  308. EXTERN_API_C( OSStatus )
  309. DSpContext_Switch                (DSpContextReference     inOldContext,
  310.                                  DSpContextReference     inNewContext);
  311.  
  312. EXTERN_API_C( OSStatus )
  313. DSpContext_Release                (DSpContextReference     inContext);
  314.  
  315. EXTERN_API_C( OSStatus )
  316. DSpContext_GetDisplayID            (DSpContextReference     inContext,
  317.                                  DisplayIDType *        outDisplayID);
  318.  
  319. EXTERN_API_C( OSStatus )
  320. DSpContext_GlobalToLocal        (DSpContextReference     inContext,
  321.                                  Point *                ioPoint);
  322.  
  323. EXTERN_API_C( OSStatus )
  324. DSpContext_LocalToGlobal        (DSpContextReference     inContext,
  325.                                  Point *                ioPoint);
  326.  
  327. EXTERN_API_C( OSStatus )
  328. DSpContext_SetVBLProc            (DSpContextReference     inContext,
  329.                                  DSpCallbackProcPtr     inProcPtr,
  330.                                  void *                    inRefCon);
  331.  
  332. EXTERN_API_C( OSStatus )
  333. DSpContext_GetFlattenedSize        (DSpContextReference     inContext,
  334.                                  UInt32 *                outFlatContextSize);
  335.  
  336. EXTERN_API_C( OSStatus )
  337. DSpContext_Flatten                (DSpContextReference     inContext,
  338.                                  void *                    outFlatContext);
  339.  
  340. EXTERN_API_C( OSStatus )
  341. DSpContext_Restore                (void *                    inFlatContext,
  342.                                  DSpContextReference *    outRestoredContext);
  343.  
  344. EXTERN_API_C( OSStatus )
  345. DSpContext_GetMonitorFrequency    (DSpContextReference     inContext,
  346.                                  Fixed *                outFrequency);
  347.  
  348. EXTERN_API_C( OSStatus )
  349. DSpContext_SetMaxFrameRate        (DSpContextReference     inContext,
  350.                                  UInt32                 inMaxFPS);
  351.  
  352. EXTERN_API_C( OSStatus )
  353. DSpContext_GetMaxFrameRate        (DSpContextReference     inContext,
  354.                                  UInt32 *                outMaxFPS);
  355.  
  356. EXTERN_API_C( OSStatus )
  357. DSpContext_SetState                (DSpContextReference     inContext,
  358.                                  DSpContextState         inState);
  359.  
  360. EXTERN_API_C( OSStatus )
  361. DSpContext_GetState                (DSpContextReference     inContext,
  362.                                  DSpContextState *        outState);
  363.  
  364. EXTERN_API_C( OSStatus )
  365. DSpContext_IsBusy                (DSpContextReference     inContext,
  366.                                  Boolean *                outBusyFlag);
  367.  
  368. /* dirty rectangles */
  369. EXTERN_API_C( OSStatus )
  370. DSpContext_SetDirtyRectGridSize    (DSpContextReference     inContext,
  371.                                  UInt32                 inCellPixelWidth,
  372.                                  UInt32                 inCellPixelHeight);
  373.  
  374. EXTERN_API_C( OSStatus )
  375. DSpContext_GetDirtyRectGridSize    (DSpContextReference     inContext,
  376.                                  UInt32 *                outCellPixelWidth,
  377.                                  UInt32 *                outCellPixelHeight);
  378.  
  379. EXTERN_API_C( OSStatus )
  380. DSpContext_GetDirtyRectGridUnits (DSpContextReference     inContext,
  381.                                  UInt32 *                outCellPixelWidth,
  382.                                  UInt32 *                outCellPixelHeight);
  383.  
  384. EXTERN_API_C( OSStatus )
  385. DSpContext_InvalBackBufferRect    (DSpContextReference     inContext,
  386.                                  const Rect *            inRect);
  387.  
  388. /* underlays */
  389. EXTERN_API_C( OSStatus )
  390. DSpContext_SetUnderlayAltBuffer    (DSpContextReference     inContext,
  391.                                  DSpAltBufferReference     inNewUnderlay);
  392.  
  393. EXTERN_API_C( OSStatus )
  394. DSpContext_GetUnderlayAltBuffer    (DSpContextReference     inContext,
  395.                                  DSpAltBufferReference * outUnderlay);
  396.  
  397. /* gamma */
  398. EXTERN_API_C( OSStatus )
  399. DSpContext_FadeGammaOut            (DSpContextReference     inContext,
  400.                                  RGBColor *                inZeroIntensityColor);
  401.  
  402. EXTERN_API_C( OSStatus )
  403. DSpContext_FadeGammaIn            (DSpContextReference     inContext,
  404.                                  RGBColor *                inZeroIntensityColor);
  405.  
  406. EXTERN_API_C( OSStatus )
  407. DSpContext_FadeGamma            (DSpContextReference     inContext,
  408.                                  SInt32                 inPercentOfOriginalIntensity,
  409.                                  RGBColor *                inZeroIntensityColor);
  410.  
  411. /* buffering */
  412. EXTERN_API_C( OSStatus )
  413. DSpContext_SwapBuffers            (DSpContextReference     inContext,
  414.                                  DSpCallbackProcPtr     inBusyProc,
  415.                                  void *                    inUserRefCon);
  416.  
  417. EXTERN_API_C( OSStatus )
  418. DSpContext_GetBackBuffer        (DSpContextReference     inContext,
  419.                                  DSpBufferKind             inBufferKind,
  420.                                  CGrafPtr *                outBackBuffer);
  421.  
  422. EXTERN_API_C( OSStatus )
  423. DSpContext_GetFrontBuffer        (DSpContextReference     inContext,
  424.                                  CGrafPtr *                outFrontBuffer);
  425.  
  426. /* clut operations */
  427. EXTERN_API_C( OSStatus )
  428. DSpContext_SetCLUTEntries        (DSpContextReference     inContext,
  429.                                  const ColorSpec *        inEntries,
  430.                                  UInt16                 inStartingEntry,
  431.                                  UInt16                 inLastEntry);
  432.  
  433. EXTERN_API_C( OSStatus )
  434. DSpContext_GetCLUTEntries        (DSpContextReference     inContext,
  435.                                  ColorSpec *            outEntries,
  436.                                  UInt16                 inStartingEntry,
  437.                                  UInt16                 inLastEntry);
  438.  
  439. /* blit operations */
  440. EXTERN_API_C( OSStatus )
  441. DSpBlit_Faster                    (DSpBlitInfoPtr         inBlitInfo,
  442.                                  Boolean                 inAsyncFlag);
  443.  
  444. EXTERN_API_C( OSStatus )
  445. DSpBlit_Fastest                    (DSpBlitInfoPtr         inBlitInfo,
  446.                                  Boolean                 inAsyncFlag);
  447.  
  448.  
  449.  
  450. #if PRAGMA_ENUM_ALWAYSINT
  451.     #pragma enumsalwaysint reset
  452. #elif PRAGMA_ENUM_OPTIONS
  453.     #pragma option enum=reset
  454. #elif defined(PRAGMA_ENUM_PACK__DRAWSPROCKET__)
  455.     #pragma options(pack_enums)
  456. #endif
  457.  
  458. #if PRAGMA_STRUCT_ALIGN
  459.     #pragma options align=reset
  460. #elif PRAGMA_STRUCT_PACKPUSH
  461.     #pragma pack(pop)
  462. #elif PRAGMA_STRUCT_PACK
  463.     #pragma pack()
  464. #endif
  465.  
  466. #ifdef PRAGMA_IMPORT_OFF
  467. #pragma import off
  468. #elif PRAGMA_IMPORT
  469. #pragma import reset
  470. #endif
  471.  
  472. #ifdef __cplusplus
  473. }
  474. #endif
  475.  
  476. #endif /* __DRAWSPROCKET__ */
  477.  
  478.